\doxysubsection{ns3\+::DGRRoute\+Manager\+Impl Class Reference}
\hypertarget{classns3_1_1_d_g_r_route_manager_impl}{}\label{classns3_1_1_d_g_r_route_manager_impl}\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}


A global router implementation.  




{\ttfamily \#include $<$dgr-\/route-\/manager-\/impl.\+h$>$}



Collaboration diagram for ns3\+::DGRRoute\+Manager\+Impl\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{dd/d62/classns3_1_1_d_g_r_route_manager_impl__coll__graph}
\end{center}
\end{figure}
\doxysubsubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a13039dc3ca88e01a6f543a3bb97a53e7}{DGRRoute\+Manager\+Impl}} ()
\item 
virtual \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a9c43604c3d2a66a108fa96faf7505b9f}{\texorpdfstring{$\sim$}{\string~}\+DGRRoute\+Manager\+Impl}} ()
\item 
virtual void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a033d120271836b470fecfe120c6fdbc8}{Build\+DGRRouting\+Database}} ()
\begin{DoxyCompactList}\small\item\em Build the routing database by gathering Link State Advertisements from each node exporting a \doxylink{classns3_1_1_d_g_r_router}{DGRRouter} interface. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a14aed0c12cb59dcdc7eaaf14c8b54ea4}{Debug\+SPFCalculate}} (Ipv4\+Address root)
\begin{DoxyCompactList}\small\item\em Debugging routine; call the core SPF from the unit tests. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a7a59fdbaae988b5c5f8ac71e4d650143}{Debug\+Use\+Lsdb}} (\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_l_s_d_b}{DGRRoute\+Manager\+LSDB}} \texorpdfstring{$\ast$}{*})
\begin{DoxyCompactList}\small\item\em Debugging routine; allow client code to supply a pre-\/built LSDB. \end{DoxyCompactList}\item 
virtual void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_acfff2ecbb8d0d59a980f3876f1603aea}{Delete\+DGRRoutes}} ()
\begin{DoxyCompactList}\small\item\em Delete all static routes on all nodes that have a DGRRouter\+Interface. \end{DoxyCompactList}\item 
virtual void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a3b798959aeda8a76373705151497692e}{Initialize\+Routes}} ()
\begin{DoxyCompactList}\small\item\em Compute routes using a Dijkstra SPF computation and populate per-\/node forwarding tables. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a56e6c18aed764302f344f362a820ff10}{DGRRoute\+Manager\+Impl}} (\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl}} \&srmi)
\begin{DoxyCompactList}\small\item\em \doxylink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl} copy construction is disallowed. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a1f608c8ac5a62f915208141c2d7bea22}{Check\+For\+Stub\+Node}} (Ipv4\+Address root)
\begin{DoxyCompactList}\small\item\em Test if a node is a stub, from an OSPF sense. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a98dcc2494c9f368e4cfed15ead8a2990}{DGRVertex\+Add\+Parent}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v)
\begin{DoxyCompactList}\small\item\em Adds a vertex to the list of children {\itshape in} each of its parents. \end{DoxyCompactList}\item 
int32\+\_\+t \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a017c230a5a38bc81243ebf39e94bd36b}{Find\+Outgoing\+Interface\+Id}} (Ipv4\+Address a, Ipv4\+Mask amask=Ipv4\+Mask(\"{}255.\+255.\+255.\+255\"{}))
\begin{DoxyCompactList}\small\item\em Return the interface number corresponding to a given IP address and mask. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl}} \& \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a19946c6a8826f5d8d9987244bcfdb4d7}{operator=}} (\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl}} \&srmi)
\begin{DoxyCompactList}\small\item\em Global Route Manager Implementation assignment operator is disallowed. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_ad51d5dbbd85120ad79227351fc16c9f4}{Process\+ASExternals}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v, \mbox{\hyperlink{classns3_1_1_d_g_r_routing_l_s_a}{DGRRouting\+LSA}} \texorpdfstring{$\ast$}{*}extlsa)
\begin{DoxyCompactList}\small\item\em Process Autonomous Systems (AS) External LSA. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a4169b90db3aa5437191ecf42e484f567}{SPFAdd\+ASExternal}} (\mbox{\hyperlink{classns3_1_1_d_g_r_routing_l_s_a}{DGRRouting\+LSA}} \texorpdfstring{$\ast$}{*}extlsa, \mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v)
\begin{DoxyCompactList}\small\item\em Add an external route to the routing tables. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a910c2efcc40a79d4c062eb08ceb11522}{SPFCalculate}} (Ipv4\+Address root, Ipv4\+Address initroot, \mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}l, uint32\+\_\+t Iface)
\begin{DoxyCompactList}\small\item\em Calculate the shortest path first (SPF) tree. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a1ac857e005409b302b1bd2fb1180af0a}{SPFGet\+Next\+Link}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v, \mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}w, \mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}prev\+\_\+link)
\begin{DoxyCompactList}\small\item\em Search for a link between two vertices. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a58756bc6216f5ebe1941a2102ae4cdf9}{SPFIntra\+Add\+Router}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v, \mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v\+\_\+init, Ipv4\+Address next\+Hop, uint32\+\_\+t Iface)
\begin{DoxyCompactList}\small\item\em Add a host route to the routing tables. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a403b832078dcb8a4facb2ae6c7b2ce15}{SPFIntra\+Add\+Stub}} (\mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}l, \mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v)
\begin{DoxyCompactList}\small\item\em Add a stub to the routing tables. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a80ce56eb81842ac31afccfdd698d1d73}{SPFIntra\+Add\+Transit}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v)
\begin{DoxyCompactList}\small\item\em Add a transit to the routing tables. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_ab573904f9f357e2b802b1bbdcdc3247d}{SPFNext}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v, \mbox{\hyperlink{classns3_1_1_d_g_r_candidate_queue}{DGRCandidate\+Queue}} \&candidate)
\begin{DoxyCompactList}\small\item\em Examine the links in v\textquotesingle{}s LSA and update the list of candidates with any vertices not already on the list. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_aa10b6b58af69a3da1d8478d50e78bef8}{SPFNexthop\+Calculation}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v, \mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}w, \mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}l, uint32\+\_\+t distance)
\begin{DoxyCompactList}\small\item\em Calculate nexthop from root through V (parent) to vertex W (destination) with given distance from root-\/\texorpdfstring{$>$}{>}W. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a71dd2f4c78a96ecb7d86dd75fd6f78bd}{SPFProcess\+Stubs}} (\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}v)
\begin{DoxyCompactList}\small\item\em Process Stub nodes. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_l_s_d_b}{DGRRoute\+Manager\+LSDB}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a466e6a4182a792e33610a1a1e7a6b990}{m\+\_\+lsdb}}
\begin{DoxyCompactList}\small\item\em the Link State Data\+Base (LSDB) of the Global Route Manager \end{DoxyCompactList}\item 
\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl_a51238c1122fc794564a658bf852d6910}{m\+\_\+spfroot}}
\begin{DoxyCompactList}\small\item\em the root node \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
A global router implementation. 

This singleton object can query interface each node in the system for a \doxylink{classns3_1_1_d_g_r_router}{DGRRouter} interface. For those nodes, it fetches one or more Link State Advertisements and stores them in a local database. Then, it can compute shortest paths on a per-\/node basis to all routers, and finally configure each of the node\textquotesingle{}s forwarding tables.

The design is guided by OSPFv2 \textbackslash{}\+RFC\{2328\} section 16.\+1.\+1 and quagga ospfd. 

Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00713}{713}} of file \mbox{\hyperlink{dgr-route-manager-impl_8h_source}{dgr-\/route-\/manager-\/impl.\+h}}.



\doxysubsubsection{Constructor \& Destructor Documentation}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a13039dc3ca88e01a6f543a3bb97a53e7}\label{classns3_1_1_d_g_r_route_manager_impl_a13039dc3ca88e01a6f543a3bb97a53e7} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!DGRRouteManagerImpl@{DGRRouteManagerImpl}}
\index{DGRRouteManagerImpl@{DGRRouteManagerImpl}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{DGRRouteManagerImpl()}{DGRRouteManagerImpl()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily ns3\+::\+DGRRoute\+Manager\+Impl\+::\+DGRRoute\+Manager\+Impl (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00541}{541}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}.

\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a9c43604c3d2a66a108fa96faf7505b9f}\label{classns3_1_1_d_g_r_route_manager_impl_a9c43604c3d2a66a108fa96faf7505b9f} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!````~DGRRouteManagerImpl@{\texorpdfstring{$\sim$}{\string~}DGRRouteManagerImpl}}
\index{````~DGRRouteManagerImpl@{\texorpdfstring{$\sim$}{\string~}DGRRouteManagerImpl}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{\texorpdfstring{$\sim$}{\string~}DGRRouteManagerImpl()}{\string~DGRRouteManagerImpl()}}
{\footnotesize\ttfamily ns3\+::\+DGRRoute\+Manager\+Impl\+::\texorpdfstring{$\sim$}{\string~}\+DGRRoute\+Manager\+Impl (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00549}{549}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}.

\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a56e6c18aed764302f344f362a820ff10}\label{classns3_1_1_d_g_r_route_manager_impl_a56e6c18aed764302f344f362a820ff10} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!DGRRouteManagerImpl@{DGRRouteManagerImpl}}
\index{DGRRouteManagerImpl@{DGRRouteManagerImpl}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{DGRRouteManagerImpl()}{DGRRouteManagerImpl()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily ns3\+::\+DGRRoute\+Manager\+Impl\+::\+DGRRoute\+Manager\+Impl (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl}} \&}]{srmi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



\doxylink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl} copy construction is disallowed. 

There\textquotesingle{}s no need for it and a compiler provided shallow copy would be wrong.


\begin{DoxyParams}{Parameters}
{\em srmi} & object to copy from \\
\hline
\end{DoxyParams}


\doxysubsubsection{Member Function Documentation}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a033d120271836b470fecfe120c6fdbc8}\label{classns3_1_1_d_g_r_route_manager_impl_a033d120271836b470fecfe120c6fdbc8} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!BuildDGRRoutingDatabase@{BuildDGRRoutingDatabase}}
\index{BuildDGRRoutingDatabase@{BuildDGRRoutingDatabase}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{BuildDGRRoutingDatabase()}{BuildDGRRoutingDatabase()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Build\+DGRRouting\+Database (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Build the routing database by gathering Link State Advertisements from each node exporting a \doxylink{classns3_1_1_d_g_r_router}{DGRRouter} interface. 



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00614}{614}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00465}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Insert()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a033d120271836b470fecfe120c6fdbc8_cgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a1f608c8ac5a62f915208141c2d7bea22}\label{classns3_1_1_d_g_r_route_manager_impl_a1f608c8ac5a62f915208141c2d7bea22} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!CheckForStubNode@{CheckForStubNode}}
\index{CheckForStubNode@{CheckForStubNode}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{CheckForStubNode()}{CheckForStubNode()}}
{\footnotesize\ttfamily bool ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Check\+For\+Stub\+Node (\begin{DoxyParamCaption}\item[{Ipv4\+Address}]{root }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Test if a node is a stub, from an OSPF sense. 

If there is only one link of type 1 or 2, then a default route can safely be added to the next-\/hop router and SPF does not need to be run


\begin{DoxyParams}{Parameters}
{\em root} & the root node \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if the node is a stub 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01374}{1374}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01972}{Find\+Outgoing\+Interface\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00075}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+Record()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00103}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Type()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00493}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00255}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NLink\+Records()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00390}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Node()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00064}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Point\+To\+Point}}, and \mbox{\hyperlink{dgr-router-interface_8h_source_l00065}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Transit\+Network}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a1f608c8ac5a62f915208141c2d7bea22_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a1f608c8ac5a62f915208141c2d7bea22_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a14aed0c12cb59dcdc7eaaf14c8b54ea4}\label{classns3_1_1_d_g_r_route_manager_impl_a14aed0c12cb59dcdc7eaaf14c8b54ea4} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!DebugSPFCalculate@{DebugSPFCalculate}}
\index{DebugSPFCalculate@{DebugSPFCalculate}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{DebugSPFCalculate()}{DebugSPFCalculate()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Debug\+SPFCalculate (\begin{DoxyParamCaption}\item[{Ipv4\+Address}]{root }\end{DoxyParamCaption})}



Debugging routine; call the core SPF from the unit tests. 


\begin{DoxyParams}{Parameters}
{\em root} & the root node to start calculations \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01361}{1361}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.

\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a7a59fdbaae988b5c5f8ac71e4d650143}\label{classns3_1_1_d_g_r_route_manager_impl_a7a59fdbaae988b5c5f8ac71e4d650143} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!DebugUseLsdb@{DebugUseLsdb}}
\index{DebugUseLsdb@{DebugUseLsdb}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{DebugUseLsdb()}{DebugUseLsdb()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Debug\+Use\+Lsdb (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_l_s_d_b}{DGRRoute\+Manager\+LSDB}} \texorpdfstring{$\ast$}{*}}]{lsdb }\end{DoxyParamCaption})}



Debugging routine; allow client code to supply a pre-\/built LSDB. 



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00559}{559}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}.

\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_acfff2ecbb8d0d59a980f3876f1603aea}\label{classns3_1_1_d_g_r_route_manager_impl_acfff2ecbb8d0d59a980f3876f1603aea} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!DeleteDGRRoutes@{DeleteDGRRoutes}}
\index{DeleteDGRRoutes@{DeleteDGRRoutes}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{DeleteDGRRoutes()}{DeleteDGRRoutes()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Delete\+DGRRoutes (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Delete all static routes on all nodes that have a DGRRouter\+Interface. 

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000001}{Todo}}]separate manually assigned static routes from static routes that the global routing code injects, and only delete the latter \end{DoxyRefDesc}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00570}{570}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_acfff2ecbb8d0d59a980f3876f1603aea_cgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a98dcc2494c9f368e4cfed15ead8a2990}\label{classns3_1_1_d_g_r_route_manager_impl_a98dcc2494c9f368e4cfed15ead8a2990} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!DGRVertexAddParent@{DGRVertexAddParent}}
\index{DGRVertexAddParent@{DGRVertexAddParent}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{DGRVertexAddParent()}{DGRVertexAddParent()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+DGRVertex\+Add\+Parent (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Adds a vertex to the list of children {\itshape in} each of its parents. 

Derived from quagga ospf\+\_\+vertex\+\_\+add\+\_\+parents ()

This is a somewhat oddly named method (blame quagga). Although you might expect it to add a parent {\itshape to} something, it actually adds a vertex to the list of children {\itshape in} each of its parents.

Given a pointer to a vertex, it links back to the vertex\textquotesingle{}s parent that it already has set and adds itself to that vertex\textquotesingle{}s list of children.


\begin{DoxyParams}{Parameters}
{\em v} & the vertex \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02299}{2299}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00386}{ns3\+::\+DGRVertex\+::\+Add\+Child()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00245}{ns3\+::\+DGRVertex\+::\+Get\+Parent()}}, and \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00861}{SPFNext()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a98dcc2494c9f368e4cfed15ead8a2990_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a98dcc2494c9f368e4cfed15ead8a2990_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a017c230a5a38bc81243ebf39e94bd36b}\label{classns3_1_1_d_g_r_route_manager_impl_a017c230a5a38bc81243ebf39e94bd36b} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!FindOutgoingInterfaceId@{FindOutgoingInterfaceId}}
\index{FindOutgoingInterfaceId@{FindOutgoingInterfaceId}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{FindOutgoingInterfaceId()}{FindOutgoingInterfaceId()}}
{\footnotesize\ttfamily int32\+\_\+t ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Find\+Outgoing\+Interface\+Id (\begin{DoxyParamCaption}\item[{Ipv4\+Address}]{a,  }\item[{Ipv4\+Mask}]{amask = {\ttfamily Ipv4Mask~(\"{}255.255.255.255\"{})} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Return the interface number corresponding to a given IP address and mask. 

This is a wrapper around Get\+Interface\+For\+Prefix(), but we first have to find the right node pointer to pass to that function. If no such interface is found, return -\/1 (note\+: unit test framework for routing assumes -\/1 to be a legal return value)


\begin{DoxyParams}{Parameters}
{\em a} & the target IP address \\
\hline
{\em amask} & the target subnet mask \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the outgoing interface number 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01972}{1972}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01374}{Check\+For\+Stub\+Node()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01095}{SPFNexthop\+Calculation()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a017c230a5a38bc81243ebf39e94bd36b_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a017c230a5a38bc81243ebf39e94bd36b_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a3b798959aeda8a76373705151497692e}\label{classns3_1_1_d_g_r_route_manager_impl_a3b798959aeda8a76373705151497692e} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!InitializeRoutes@{InitializeRoutes}}
\index{InitializeRoutes@{InitializeRoutes}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{InitializeRoutes()}{InitializeRoutes()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Initialize\+Routes (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



Compute routes using a Dijkstra SPF computation and populate per-\/node forwarding tables. 



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00696}{696}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00075}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+Record()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00103}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Type()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00493}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00118}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Metric()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00358}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NAttached\+Routers()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00255}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NLink\+Records()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00186}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Type()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00064}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Point\+To\+Point}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01283}{SPFGet\+Next\+Link()}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00066}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Stub\+Network}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00065}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Transit\+Network}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00082}{ns3\+::\+DGRVertex\+::\+Vertex\+Network}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00081}{ns3\+::\+DGRVertex\+::\+Vertex\+Router}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=550pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a3b798959aeda8a76373705151497692e_cgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a19946c6a8826f5d8d9987244bcfdb4d7}\label{classns3_1_1_d_g_r_route_manager_impl_a19946c6a8826f5d8d9987244bcfdb4d7} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!operator=@{operator=}}
\index{operator=@{operator=}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{operator=()}{operator=()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl}} \& ns3\+::\+DGRRoute\+Manager\+Impl\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_impl}{DGRRoute\+Manager\+Impl}} \&}]{srmi }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Global Route Manager Implementation assignment operator is disallowed. 

There\textquotesingle{}s no need for it and a compiler provided shallow copy would be hopelessly wrong.


\begin{DoxyParams}{Parameters}
{\em srmi} & object to copy from \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the copied object 
\end{DoxyReturn}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_ad51d5dbbd85120ad79227351fc16c9f4}\label{classns3_1_1_d_g_r_route_manager_impl_ad51d5dbbd85120ad79227351fc16c9f4} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!ProcessASExternals@{ProcessASExternals}}
\index{ProcessASExternals@{ProcessASExternals}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{ProcessASExternals()}{ProcessASExternals()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+Process\+ASExternals (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_routing_l_s_a}{DGRRouting\+LSA}} \texorpdfstring{$\ast$}{*}}]{extlsa }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Process Autonomous Systems (AS) External LSA. 


\begin{DoxyParams}{Parameters}
{\em v} & vertex to be processed \\
\hline
{\em extlsa} & external LSA \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01630}{1630}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00315}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Advertising\+Router()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00367}{ns3\+::\+DGRVertex\+::\+Get\+Child()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00360}{ns3\+::\+DGRVertex\+::\+Get\+NChildren()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00186}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Type()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00401}{ns3\+::\+DGRVertex\+::\+Is\+Vertex\+Processed()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01630}{Process\+ASExternals()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00394}{ns3\+::\+DGRVertex\+::\+Set\+Vertex\+Processed()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01664}{SPFAdd\+ASExternal()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00081}{ns3\+::\+DGRVertex\+::\+Vertex\+Router}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01630}{Process\+ASExternals()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_ad51d5dbbd85120ad79227351fc16c9f4_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_ad51d5dbbd85120ad79227351fc16c9f4_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a4169b90db3aa5437191ecf42e484f567}\label{classns3_1_1_d_g_r_route_manager_impl_a4169b90db3aa5437191ecf42e484f567} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFAddASExternal@{SPFAddASExternal}}
\index{SPFAddASExternal@{SPFAddASExternal}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFAddASExternal()}{SPFAddASExternal()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFAdd\+ASExternal (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_routing_l_s_a}{DGRRouting\+LSA}} \texorpdfstring{$\ast$}{*}}]{extlsa,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Add an external route to the routing tables. 


\begin{DoxyParams}{Parameters}
{\em extlsa} & the external LSA \\
\hline
{\em v} & the vertex \\
\hline
\end{DoxyParams}
\begin{DoxyAuthor}{Author}
Pu Yang get the distance
\end{DoxyAuthor}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01664}{1664}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00315}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Advertising\+Router()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00336}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Network\+LSANetwork\+Mask()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00353}{ns3\+::\+DGRVertex\+::\+Get\+NRoot\+Exit\+Directions()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00300}{ns3\+::\+DGRVertex\+::\+Get\+Root\+Exit\+Direction()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01630}{Process\+ASExternals()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a4169b90db3aa5437191ecf42e484f567_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a4169b90db3aa5437191ecf42e484f567_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a910c2efcc40a79d4c062eb08ceb11522}\label{classns3_1_1_d_g_r_route_manager_impl_a910c2efcc40a79d4c062eb08ceb11522} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFCalculate@{SPFCalculate}}
\index{SPFCalculate@{SPFCalculate}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFCalculate()}{SPFCalculate()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFCalculate (\begin{DoxyParamCaption}\item[{Ipv4\+Address}]{root,  }\item[{Ipv4\+Address}]{initroot,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}}]{l,  }\item[{uint32\+\_\+t}]{Iface }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Calculate the shortest path first (SPF) tree. 

Equivalent to quagga ospf\+\_\+spf\+\_\+calculate 
\begin{DoxyParams}{Parameters}
{\em root} & the root node \\
\hline
\end{DoxyParams}
add the initroot for DGR \begin{DoxyAuthor}{Author}
Pu Yang
\end{DoxyAuthor}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{1456}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01374}{Check\+For\+Stub\+Node()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00408}{ns3\+::\+DGRVertex\+::\+Clear\+Vertex\+Processed()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02299}{DGRVertex\+Add\+Parent()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00479}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+Ext\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00493}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00118}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Metric()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00486}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+Num\+Ext\+LSAs()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00186}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Type()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00453}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Initialize()}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00276}{ns3\+::\+DGRRouting\+LSA\+::\+LSA\+\_\+\+SPF\+\_\+\+IN\+\_\+\+SPFTREE}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}, \mbox{\hyperlink{dgr-candidate-queue_8cc_source_l00105}{ns3\+::\+DGRCandidate\+Queue\+::\+Pop()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01630}{Process\+ASExternals()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00221}{ns3\+::\+DGRVertex\+::\+Set\+Distance\+From\+Root()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00383}{ns3\+::\+DGRRouting\+LSA\+::\+Set\+Status()}}, \mbox{\hyperlink{dgr-candidate-queue_8cc_source_l00138}{ns3\+::\+DGRCandidate\+Queue\+::\+Size()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02059}{SPFIntra\+Add\+Router()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02181}{SPFIntra\+Add\+Transit()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00861}{SPFNext()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01798}{SPFProcess\+Stubs()}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00082}{ns3\+::\+DGRVertex\+::\+Vertex\+Network}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00081}{ns3\+::\+DGRVertex\+::\+Vertex\+Router}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00696}{Initialize\+Routes()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=550pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a910c2efcc40a79d4c062eb08ceb11522_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a910c2efcc40a79d4c062eb08ceb11522_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a1ac857e005409b302b1bd2fb1180af0a}\label{classns3_1_1_d_g_r_route_manager_impl_a1ac857e005409b302b1bd2fb1180af0a} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFGetNextLink@{SPFGetNextLink}}
\index{SPFGetNextLink@{SPFGetNextLink}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFGetNextLink()}{SPFGetNextLink()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*} ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFGet\+Next\+Link (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{w,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}}]{prev\+\_\+link }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Search for a link between two vertices. 

This method is derived from quagga ospf\+\_\+get\+\_\+next\+\_\+link ()

First search the Global Router Link Records of vertex {\itshape v} for one representing a point-\/to point link to vertex {\itshape w}.

What is done depends on prev\+\_\+link. Contrary to appearances, prev\+\_\+link just acts as a flag here. If prev\+\_\+link is NULL, we return the first Global Router Link Record we find that describes a point-\/to-\/point link from {\itshape v} to {\itshape w}. If prev\+\_\+link is not NULL, we return a Global Router Link Record representing a possible {\itshape second} link from {\itshape v} to {\itshape w}.


\begin{DoxyParams}{Parameters}
{\em v} & first vertex \\
\hline
{\em w} & second vertex \\
\hline
{\em prev\+\_\+link} & the previous link in the list \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the link\textquotesingle{}s record 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01283}{1283}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00075}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+Record()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, and \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00696}{Initialize\+Routes()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01095}{SPFNexthop\+Calculation()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a1ac857e005409b302b1bd2fb1180af0a_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a1ac857e005409b302b1bd2fb1180af0a_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a58756bc6216f5ebe1941a2102ae4cdf9}\label{classns3_1_1_d_g_r_route_manager_impl_a58756bc6216f5ebe1941a2102ae4cdf9} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFIntraAddRouter@{SPFIntraAddRouter}}
\index{SPFIntraAddRouter@{SPFIntraAddRouter}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFIntraAddRouter()}{SPFIntraAddRouter()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFIntra\+Add\+Router (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v\+\_\+init,  }\item[{Ipv4\+Address}]{next\+Hop,  }\item[{uint32\+\_\+t}]{Iface }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Add a host route to the routing tables. 

This method is derived from quagga ospf\+\_\+intra\+\_\+add\+\_\+router ()

This is where we are actually going to add the host routes to the routing tables of the individual nodes.

The vertex passed as a parameter has just been added to the SPF tree. This vertex must have a valid m\+\_\+root\+\_\+oid, corresponding to the outgoing interface on the root router of the tree that is the first hop on the path to the vertex. The vertex must also have a next hop address, corresponding to the next hop on the path to the vertex. The vertex has an m\+\_\+lsa field that has some number of link records. For each point to point link record, the m\+\_\+link\+Data is the local IP address of the link. This corresponds to a destination IP address, reachable from the root, to which we add a host route.


\begin{DoxyParams}{Parameters}
{\em v} & the vertex \\
\hline
\end{DoxyParams}
the router Ipv4 Address to write the routing table \begin{DoxyAuthor}{Author}
Pu Yang
\end{DoxyAuthor}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02059}{2059}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00228}{ns3\+::\+DGRVertex\+::\+Get\+Distance\+From\+Root()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+Record()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00103}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Type()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00255}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NLink\+Records()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00353}{ns3\+::\+DGRVertex\+::\+Get\+NRoot\+Exit\+Directions()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00300}{ns3\+::\+DGRVertex\+::\+Get\+Root\+Exit\+Direction()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}, and \mbox{\hyperlink{dgr-router-interface_8h_source_l00064}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Point\+To\+Point}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a58756bc6216f5ebe1941a2102ae4cdf9_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a58756bc6216f5ebe1941a2102ae4cdf9_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a403b832078dcb8a4facb2ae6c7b2ce15}\label{classns3_1_1_d_g_r_route_manager_impl_a403b832078dcb8a4facb2ae6c7b2ce15} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFIntraAddStub@{SPFIntraAddStub}}
\index{SPFIntraAddStub@{SPFIntraAddStub}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFIntraAddStub()}{SPFIntraAddStub()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFIntra\+Add\+Stub (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}}]{l,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Add a stub to the routing tables. 


\begin{DoxyParams}{Parameters}
{\em l} & the global routing link record \\
\hline
{\em v} & the vertex \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01832}{1832}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00075}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00353}{ns3\+::\+DGRVertex\+::\+Get\+NRoot\+Exit\+Directions()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00300}{ns3\+::\+DGRVertex\+::\+Get\+Root\+Exit\+Direction()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01798}{SPFProcess\+Stubs()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a403b832078dcb8a4facb2ae6c7b2ce15_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a403b832078dcb8a4facb2ae6c7b2ce15_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a80ce56eb81842ac31afccfdd698d1d73}\label{classns3_1_1_d_g_r_route_manager_impl_a80ce56eb81842ac31afccfdd698d1d73} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFIntraAddTransit@{SPFIntraAddTransit}}
\index{SPFIntraAddTransit@{SPFIntraAddTransit}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFIntraAddTransit()}{SPFIntraAddTransit()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFIntra\+Add\+Transit (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Add a transit to the routing tables. 


\begin{DoxyParams}{Parameters}
{\em v} & the vertex \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02181}{2181}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00336}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Network\+LSANetwork\+Mask()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00353}{ns3\+::\+DGRVertex\+::\+Get\+NRoot\+Exit\+Directions()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00300}{ns3\+::\+DGRVertex\+::\+Get\+Root\+Exit\+Direction()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00539}{ns3\+::\+DGRRouter\+::\+Get\+Routing\+Protocol()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a80ce56eb81842ac31afccfdd698d1d73_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a80ce56eb81842ac31afccfdd698d1d73_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_ab573904f9f357e2b802b1bbdcdc3247d}\label{classns3_1_1_d_g_r_route_manager_impl_ab573904f9f357e2b802b1bbdcdc3247d} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFNext@{SPFNext}}
\index{SPFNext@{SPFNext}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFNext()}{SPFNext()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFNext (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_candidate_queue}{DGRCandidate\+Queue}} \&}]{candidate }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Examine the links in v\textquotesingle{}s LSA and update the list of candidates with any vertices not already on the list. 

This method is derived from quagga ospf\+\_\+spf\+\_\+next (). See RFC2328 Section 16.\+1 (2) for further details.

We\textquotesingle{}re passed a parameter {\itshape v} that is a vertex which is already in the SPF tree. A vertex represents a router node. We also get a reference to the SPF candidate queue, which is a priority queue containing the shortest paths to the networks we know about.

We examine the links in v\textquotesingle{}s LSA and update the list of candidates with any vertices not already on the list. If a lower-\/cost path is found to a vertex already on the candidate list, store the new (lower) cost.


\begin{DoxyParams}{Parameters}
{\em v} & the vertex \\
\hline
{\em candidate} & the SPF candidate queue \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00861}{861}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02299}{DGRVertex\+Add\+Parent()}}, \mbox{\hyperlink{dgr-candidate-queue_8cc_source_l00145}{ns3\+::\+DGRCandidate\+Queue\+::\+Find()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00365}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Attached\+Router()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00228}{ns3\+::\+DGRVertex\+::\+Get\+Distance\+From\+Root()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00075}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+Record()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00103}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Type()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00493}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00511}{ns3\+::\+DGRRoute\+Manager\+LSDB\+::\+Get\+LSABy\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00287}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+LSType()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00118}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Metric()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00358}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NAttached\+Routers()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00255}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NLink\+Records()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00343}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Status()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00186}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Type()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00275}{ns3\+::\+DGRRouting\+LSA\+::\+LSA\+\_\+\+SPF\+\_\+\+CANDIDATE}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00276}{ns3\+::\+DGRRouting\+LSA\+::\+LSA\+\_\+\+SPF\+\_\+\+IN\+\_\+\+SPFTREE}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00274}{ns3\+::\+DGRRouting\+LSA\+::\+LSA\+\_\+\+SPF\+\_\+\+NOT\+\_\+\+EXPLORED}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{m\+\_\+lsdb}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00264}{ns3\+::\+DGRVertex\+::\+Merge\+Parent()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00322}{ns3\+::\+DGRVertex\+::\+Merge\+Root\+Exit\+Directions()}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00064}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Point\+To\+Point}}, \mbox{\hyperlink{dgr-candidate-queue_8cc_source_l00093}{ns3\+::\+DGRCandidate\+Queue\+::\+Push()}}, \mbox{\hyperlink{dgr-candidate-queue_8cc_source_l00163}{ns3\+::\+DGRCandidate\+Queue\+::\+Reorder()}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Router\+LSA}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00383}{ns3\+::\+DGRRouting\+LSA\+::\+Set\+Status()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01095}{SPFNexthop\+Calculation()}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00066}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Stub\+Network}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00065}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Transit\+Network}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00082}{ns3\+::\+DGRVertex\+::\+Vertex\+Network}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00081}{ns3\+::\+DGRVertex\+::\+Vertex\+Router}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=550pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_ab573904f9f357e2b802b1bbdcdc3247d_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_ab573904f9f357e2b802b1bbdcdc3247d_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_aa10b6b58af69a3da1d8478d50e78bef8}\label{classns3_1_1_d_g_r_route_manager_impl_aa10b6b58af69a3da1d8478d50e78bef8} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFNexthopCalculation@{SPFNexthopCalculation}}
\index{SPFNexthopCalculation@{SPFNexthopCalculation}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFNexthopCalculation()}{SPFNexthopCalculation()}}
{\footnotesize\ttfamily int ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFNexthop\+Calculation (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{w,  }\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_routing_link_record}{DGRRouting\+Link\+Record}} \texorpdfstring{$\ast$}{*}}]{l,  }\item[{uint32\+\_\+t}]{distance }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Calculate nexthop from root through V (parent) to vertex W (destination) with given distance from root-\/\texorpdfstring{$>$}{>}W. 

This method is derived from quagga ospf\+\_\+nexthop\+\_\+calculation() 16.\+1.\+1. For now, this is greatly simplified from the quagga code


\begin{DoxyParams}{Parameters}
{\em v} & the parent \\
\hline
{\em w} & the destination \\
\hline
{\em l} & the link record \\
\hline
{\em distance} & the target distance \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 on success 
\end{DoxyReturn}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01095}{1095}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01972}{Find\+Outgoing\+Interface\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00089}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Data()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00287}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+LSType()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00336}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Network\+LSANetwork\+Mask()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00245}{ns3\+::\+DGRVertex\+::\+Get\+Parent()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00300}{ns3\+::\+DGRVertex\+::\+Get\+Root\+Exit\+Direction()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00186}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Type()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00337}{ns3\+::\+DGRVertex\+::\+Inherit\+All\+Root\+Exit\+Directions()}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{m\+\_\+spfroot}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00263}{ns3\+::\+DGRRouting\+LSA\+::\+Network\+LSA}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00221}{ns3\+::\+DGRVertex\+::\+Set\+Distance\+From\+Root()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00235}{ns3\+::\+DGRVertex\+::\+Set\+Parent()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00279}{ns3\+::\+DGRVertex\+::\+Set\+Root\+Exit\+Direction()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01283}{SPFGet\+Next\+Link()}}, \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00082}{ns3\+::\+DGRVertex\+::\+Vertex\+Network}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00081}{ns3\+::\+DGRVertex\+::\+Vertex\+Router}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00861}{SPFNext()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_aa10b6b58af69a3da1d8478d50e78bef8_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_aa10b6b58af69a3da1d8478d50e78bef8_icgraph}
\end{center}
\end{figure}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a71dd2f4c78a96ecb7d86dd75fd6f78bd}\label{classns3_1_1_d_g_r_route_manager_impl_a71dd2f4c78a96ecb7d86dd75fd6f78bd} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!SPFProcessStubs@{SPFProcessStubs}}
\index{SPFProcessStubs@{SPFProcessStubs}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{SPFProcessStubs()}{SPFProcessStubs()}}
{\footnotesize\ttfamily void ns3\+::\+DGRRoute\+Manager\+Impl\+::\+SPFProcess\+Stubs (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}} \texorpdfstring{$\ast$}{*}}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Process Stub nodes. 

Processing logic from RFC 2328, page 166 and quagga ospf\+\_\+spf\+\_\+process\+\_\+stubs () stub link records will exist for point-\/to-\/point interfaces and for broadcast interfaces for which no neighboring router can be found


\begin{DoxyParams}{Parameters}
{\em v} & vertex to be processed \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01798}{1798}} of file \mbox{\hyperlink{dgr-route-manager-impl_8cc_source}{dgr-\/route-\/manager-\/impl.\+cc}}.



References \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00367}{ns3\+::\+DGRVertex\+::\+Get\+Child()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00075}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00262}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+Record()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00301}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+Link\+State\+Id()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00103}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Get\+Link\+Type()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00214}{ns3\+::\+DGRVertex\+::\+Get\+LSA()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00360}{ns3\+::\+DGRVertex\+::\+Get\+NChildren()}}, \mbox{\hyperlink{dgr-router-interface_8cc_source_l00255}{ns3\+::\+DGRRouting\+LSA\+::\+Get\+NLink\+Records()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00200}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00186}{ns3\+::\+DGRVertex\+::\+Get\+Vertex\+Type()}}, \mbox{\hyperlink{dgr-sink_8cc_source_l00169}{ns3\+::i}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00401}{ns3\+::\+DGRVertex\+::\+Is\+Vertex\+Processed()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00394}{ns3\+::\+DGRVertex\+::\+Set\+Vertex\+Processed()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01832}{SPFIntra\+Add\+Stub()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01798}{SPFProcess\+Stubs()}}, \mbox{\hyperlink{dgr-router-interface_8h_source_l00066}{ns3\+::\+DGRRouting\+Link\+Record\+::\+Stub\+Network}}, and \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00081}{ns3\+::\+DGRVertex\+::\+Vertex\+Router}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01798}{SPFProcess\+Stubs()}}.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a71dd2f4c78a96ecb7d86dd75fd6f78bd_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{da/d20/classns3_1_1_d_g_r_route_manager_impl_a71dd2f4c78a96ecb7d86dd75fd6f78bd_icgraph}
\end{center}
\end{figure}


\doxysubsubsection{Member Data Documentation}
\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a466e6a4182a792e33610a1a1e7a6b990}\label{classns3_1_1_d_g_r_route_manager_impl_a466e6a4182a792e33610a1a1e7a6b990} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!m\_lsdb@{m\_lsdb}}
\index{m\_lsdb@{m\_lsdb}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{m\_lsdb}{m\_lsdb}}
{\footnotesize\ttfamily \mbox{\hyperlink{classns3_1_1_d_g_r_route_manager_l_s_d_b}{DGRRoute\+Manager\+LSDB}}\texorpdfstring{$\ast$}{*} ns3\+::\+DGRRoute\+Manager\+Impl\+::m\+\_\+lsdb\hspace{0.3cm}{\ttfamily [private]}}



the Link State Data\+Base (LSDB) of the Global Route Manager 



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00771}{771}} of file \mbox{\hyperlink{dgr-route-manager-impl_8h_source}{dgr-\/route-\/manager-\/impl.\+h}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00541}{DGRRoute\+Manager\+Impl()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00549}{\texorpdfstring{$\sim$}{\string~}\+DGRRoute\+Manager\+Impl()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00614}{Build\+DGRRouting\+Database()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01374}{Check\+For\+Stub\+Node()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00559}{Debug\+Use\+Lsdb()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00570}{Delete\+DGRRoutes()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00696}{Initialize\+Routes()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l00861}{SPFNext()}}.

\Hypertarget{classns3_1_1_d_g_r_route_manager_impl_a51238c1122fc794564a658bf852d6910}\label{classns3_1_1_d_g_r_route_manager_impl_a51238c1122fc794564a658bf852d6910} 
\index{ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}!m\_spfroot@{m\_spfroot}}
\index{m\_spfroot@{m\_spfroot}!ns3::DGRRouteManagerImpl@{ns3::DGRRouteManagerImpl}}
\doxyparagraph{\texorpdfstring{m\_spfroot}{m\_spfroot}}
{\footnotesize\ttfamily \mbox{\hyperlink{classns3_1_1_d_g_r_vertex}{DGRVertex}}\texorpdfstring{$\ast$}{*} ns3\+::\+DGRRoute\+Manager\+Impl\+::m\+\_\+spfroot\hspace{0.3cm}{\ttfamily [private]}}



the root node 



Definition at line \mbox{\hyperlink{dgr-route-manager-impl_8h_source_l00770}{770}} of file \mbox{\hyperlink{dgr-route-manager-impl_8h_source}{dgr-\/route-\/manager-\/impl.\+h}}.



Referenced by \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01972}{Find\+Outgoing\+Interface\+Id()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01664}{SPFAdd\+ASExternal()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01456}{SPFCalculate()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02059}{SPFIntra\+Add\+Router()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01832}{SPFIntra\+Add\+Stub()}}, \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l02181}{SPFIntra\+Add\+Transit()}}, and \mbox{\hyperlink{dgr-route-manager-impl_8cc_source_l01095}{SPFNexthop\+Calculation()}}.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
model/\mbox{\hyperlink{dgr-route-manager-impl_8h}{dgr-\/route-\/manager-\/impl.\+h}}\item 
model/\mbox{\hyperlink{dgr-route-manager-impl_8cc}{dgr-\/route-\/manager-\/impl.\+cc}}\end{DoxyCompactItemize}
